"""
内置高阶函数
    1. map（函数，可迭代对象）：使用可迭代对象中的每个元素调用函数，将返回值作为新可迭代对象元素；返回值为新可迭代对象。
    2. filter(函数，可迭代对象)：根据条件筛选可迭代对象中的元素，返回值为新可迭代对象。
    3. sorted(可迭代对象，key = 函数,reverse = bool值)：排序，返回值为排序结果。
    4. max(可迭代对象，key = 函数)：根据函数获取可迭代对象的最大值。
    5. min(可迭代对象，key = 函数)：根据函数获取可迭代对象的最小值。
"""
from exercise04 import Employee

employees = [
    Employee(1001,'茹凤',9002,16000),
    Employee(1002,'韩耀祖',9001,19000),
    Employee(1003,'谭新宇',9003,15000),
    Employee(1004,'千琪',9004,22000),
    Employee(1005,'李欣桐',9002,4000),

]

# 1. 找出工资最大的员工，和工资最小的员工
emp1 = max(employees,key= lambda emp:emp.salary)
emp2 = min(employees,key=lambda emp:emp.salary)
print(emp1)
print(emp2)

print("=" * 30)

#2. 查找部门是9002的员工信息
for emp in filter(lambda emp:emp.did == 9002,employees):
    print(emp)

print('=' * 30)

# 3. 打印出所有员工的姓名
for emp in map(lambda emp:emp.name,employees):
    print(emp)

print('=' * 30)
# 4. 按照员工工资升序排列
new_list = sorted(employees,key=lambda emp:emp.salary)
for emp in new_list:
    print(emp)

# 5. 按照员工工资降序排列
print('=' * 30)

new_list2 = sorted(employees,key=lambda emp:emp.salary,reverse=True)
for emp in new_list2:
    print(emp)